<?php

namespace App\Models\Orders;

use App\Models\BaseModel;

class OrdersModel extends BaseModel
{
    /**
     * 与模型关联的数据表。
     *
     * @var string
     */
    protected $table = 'orders';

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = array(
        'id',
        'orders_user_id',
        'ordersno',
        'sup_orderno',
        'sup_id',
        'sup_name',
        'status',
        'status_desc',
        'first_status',
        'first_status_at',
        'first_status_desc',
        'first_money',
        'passing_money',
        'card_status',
        'card_status_desc',
        'three_msg',
        'express_company',
        'express_number',
        'goods_id',
        'goods_name',
        'goods_code',
        'product_id',
        'product_name',
        'product_code',
        'iccid',
        'province',
        'city',
        'imei',
        'pay_money',
        'shop_id',
        'shop_str',
        'deliver_at',
        'sign_at',
        'activat_at',
        'nums',
        'created_at',
        'remark',
        'type',
        'shop_name_str',
        'shop_id_str',
        'sup_goods_id_str',
        'sup_shop_id',
        'sup_shop_name',
        'shop_name',
        'is_edit',
        'one_product_id',
        'one_product_name',
        'one_product_code',
        'sup_product_id',
        'sup_product_name',
        'sup_product_code',
        'sup_goods_code',
        'sup_goods_name',
        'sup_goods_id',
        'channel_error_josn',
        'updated_at',
        'is_online',
        'express_status',
        'express_phone',
        'express_status_desc',
        'express_desc',
        'real_name_url',
        'product_type',
        'product_operator',
        'rebate_status',
        'card_balance',
        'rebate_user_id',
        'review_user_id',
        'review_status',
        'review_at',
        'instantly_status',
        'service_user_id',
        'issue_user_id',
        'activat_status',
        'review_activat_user_id',
        'review_first_user_id',
        'forbid_status',
        'forbid_activat_status',
        'forbid_first_status',
        'forbid_express_status',
        'number_remark'
    );

    // public $timestamps = false;


    /**
     * 查询数据需要过滤掉的属性。
     *
     * @var array
     */

    protected $hidden = array(
        'updated_at'
    );


    // 关联 role表
    public function userToRole($role)
    {
        // return $this->hasMany(Role::className(),);
    }
    //订单的状态
    // 提交中 审核中 已发货 已签收 已激活 异常单  失败单
    public function orderStatus()
    {
        return config('card.ordersStatus');
    }

    public function getOrderStatusDesc($key)
    {
        $allStatus = $this->orderStatus();
        return !empty($allStatus[$key]) ? $allStatus[$key] : '未知状态';
    }

    public function getSourceType()
    {
        return config('card.sourceType');
    }

    public function getOrderSource($key)
    {
        $allStatus = $this->getSourceType();
        if (!empty($allStatus[$key])) {
            return $allStatus[$key];
        }
        return '未知渠道';
    }

    public function getIsEdit()
    {
        /**  1+ 用户信息修改 2+ 商品信息修改 3+ 产品信息修改
         */
    }

    // 物流状态
    public function expressStatus()
    {
        return config('express.status');
    }

    public function getExpressStatus($strtus)
    {
        $statusData = $this->expressStatus;
        if (!empty($$statusData[$strtus])) {
            return $statusData[$strtus];
        }
        return '未知状态';
    }

    public function ordersUser()
    {
        return $this->hasOne('App\Models\Orders\OrdersUserModel', 'id', 'orders_user_id');
    }

//审核员资料获取
    public function reviewUser()
    {
        return $this->hasOne('App\Models\Admin\AdminUsers', 'id', 'review_user_id');
    }

//返费员资料获取
    public function rebateUser()
    {
        return $this->hasOne('App\Models\Admin\AdminUsers', 'id', 'rebate_user_id');
    }

    //    一对一的返费信息
    public function rebate()
    {
        return $this->hasOne('App\Models\Rebate\RebateModel', 'id', 'rebate_id');
    }

//    一对多的已返费记录信息
    public function rebateLogs()
    {
        return $this->hasMany('App\Models\Rebate\RebateLogsModel', 'orders_id');
    }
}
